home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / Messager.AMOS / Messager.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1992-11-08  |  4.4 KB  |  127 lines

  1. Screen Open 1,304,8,4,0
  2. Curs Off : Flash Off : Paper 0 : Cls 0
  3. For A=0 To 31 : Colour A,0 : Next 
  4. Palette 0,$F00,$F80,$F0
  5. Screen Display 1,128,41,304,8
  6. Pen 3 : Print "ENERGY"; : EN=100
  7. Ink 3 : Bar 56,1 To 57+EN,6
  8. Screen Open 0,672,200,4,0
  9. Flash Off : Curs Off : Cls 3 : Hide 
  10. Palette 0,$BBB,$777,$555,$EEE,$A00,$F40,$EE0,0,$77F,$33F,8,$F00,$777,$A00,$CC0
  11. For A=0 To 15 : Colour A+16,Colour(A) : Next 
  12. Palette 0,$20,$40,$60
  13. Screen Display 0,144,50,304,200
  14. 'MAKE
  15. Make Mask 
  16. Set Rainbow 1,3,242,"","",""
  17. GC=8 : BC=15
  18. For A=0 To 241
  19.   Rain(1,A)=GC*$10+BC
  20.   If(A mod 8)=7 and BC>0 Then Dec BC : Rain(1,A-1)=GC*$10+BC
  21.   If(A mod 16)=15 and BC=0 and GC>0 Then Dec GC : Rain(1,A-1)=GC*$10+BC
  22. Next 
  23. Rainbow 1,0,49,202
  24. X=0 : OP=0 : OX=0 : MX=0
  25. A$="A: L X=RD/300; P; J A;"
  26. Channel 9 To Rainbow 1
  27. Amal 9,A$
  28. A$="L R0=14400; L R1=9800; L R2=0; L R3=0; L R4=5; L R5=0; L R6=3; "
  29. A$=A$+"A: P; L RC=R0; L RD=R1; L A=R5/2+R6; L R5=R5+1; L R3=R3+1; L R0=R0+R2; "
  30. A$=A$+"   L R1=R1+R3; L X=R0/50; L Y=R1/50; "
  31. A$=A$+"   If J1&4 Jump Left; "
  32. A$=A$+"   If J1&8 Jump Right; "
  33. A$=A$+"   L R6=3; "
  34. A$=A$+"B: If J1&1 Jump Up; "
  35. A$=A$+"   If J1&2 Jump Down; "
  36. A$=A$+"C: If R0<7200 Jump V;"
  37. A$=A$+"   If R0>20800 Jump Y; "
  38. A$=A$+"E: If R1<2550 Jump X; "
  39. A$=A$+"F: If R5<3 Jump A; Let R5=0; Jump A;"
  40. A$=A$+"V: Let R0=7200; L X=R0/50; Let R2=0; Jump E; "
  41. A$=A$+"Y: Let R0=20800; L X=R0/50; Let R2=0; Jump E; "
  42. A$=A$+"X: Let R1=2550; L Y=R1/50; Let R3=0; Jump F; "
  43. A$=A$+"L: L R6=2 ; If R2<-200 Jump B; Let R2=R2-R4; Jump B; "
  44. A$=A$+"R: L R6=4 ; If R2>200 Jump B; Let R2=R2+R4; Jump B; "
  45. A$=A$+"U: Let R3=R3-R4-1; Jump C; "
  46. A$=A$+"D: Let R3=R3+R4; Jump C; "
  47. B$="A: Let X=X+4; P; If X<464 Jump A; "
  48. UBOOT$="Let R0=22400; Let R1=-50; L Y=R2+50; L RB=Y; "
  49. UBOOT$=UBOOT$+"A: Let R1=R1-1; Let R0=R0+R1; Let X=R0/50; L RA=X; P; I X>112 J A; "
  50. ROCKET$="Let R0=RA*50; Let R1=-200; L R2=RB+2*50; A 0,(9,1)(10,1); "
  51. ROCKET$=ROCKET$+"A: Let R1=R1-3; Let R0=R0+R1; Let X=R0/50; L Y=R2/50;"
  52. ROCKET$=ROCKET$+"L R3=RD-R2/25; L R2=R2+R3; P; I X>112 J A; "
  53. Sprite 0,0,0,1
  54. Sprite 2,0,0,11
  55. Sprite 3,0,0,11
  56. Sprite 4,0,0,0
  57. Sprite 5,0,0,7
  58. Sprite 6,0,0,9
  59. Sprite 7,0,0,10
  60. Channel 0 To Sprite 0
  61. Channel 1 To Sprite 2
  62. Channel 2 To Sprite 3
  63. Channel 7 To Sprite 5
  64. Channel 4 To Sprite 6
  65. Channel 5 To Sprite 7
  66. Channel 6 To Sprite 4
  67. Amal 0,A$
  68. Amal On 0
  69. Amal On 9
  70. Rem           20654321654321 
  71. Doke $DFF098,%11000011000001
  72. A=Peek($DFF00F)
  73. ES=0
  74. Repeat 
  75.   Wait Vbl : Gosub SCROL : EX=0
  76.   A=Peek($DFF00F) and 6 : If A Then Gosub CRASH
  77.   If Sprite Col(0,5 To 5) Then EN=Max(0,EN-2) : Gosub CRASH : Amal Off 7 : Sprite 5,0,0, : EX=1
  78.   If Sprite Col(0,6 To 6) Then EN=Max(0,EN-4) : Gosub CRASH : Amal Off 4 : Sprite 6,0,0, : EX=1
  79.   If Sprite Col(0,7 To 7) Then EN=Max(0,EN-4) : Gosub CRASH : Amal Off 5 : Sprite 7,0,0, : EX=1
  80.   If EN=0 and Chanan(1+ES)=0 Then EX=1
  81.   If Sprite Col(4,5 To 5) Then EX=0 : Sprite 2+ES,X Sprite(5)-3,Y Sprite(5)+2, : Amal Off 3 : Sprite 5,0,0, : Gosub EX
  82.   If EX=1 Then Sprite 2+ES,X Sprite(0)+Rnd(10),Y Sprite(0)+Rnd(4), : Gosub EX
  83.   If Fire(1) and Chanmv(6)=0 Then Sprite 4,X Sprite(0),Y Sprite(0)+4,6 : Amal 6,B$ : Amal On 6
  84.   If Rnd(50)=1 and Chanmv(7)=0 Then Amal 7,UBOOT$ : Amal On 7 : Amreg(7,2)=MY
  85.   If Rnd(20)=2 and Chanmv(7) and Chanmv(4+RO)=0 Then Amal 4+RO,ROCKET$ : Amal On 4+RO : RO=1-RO
  86. Until Y Sprite(0)>250
  87. End 
  88. CRASH:
  89.   If Chanan(1+ES)=0 Then EX=1
  90.   EN=Max(0,EN-1) : Screen 1 : Ink(EN-2)/33+1 : Bar 56,1 To 57+EN,6
  91.   Ink 0 : Bar 58+EN,0 To 63+EN,8 : Screen 0
  92.   Amreg(0,4)=(EN+19)/20
  93. Return 
  94. EX:
  95.   Amal 1+ES,"A 1,(11,2)(12,2)(13,2)(14,3)(15,3)(16,3)(17,2)(18,1)(19,1); " : Amal On 1+ES
  96.   ES=1-ES
  97.   Print ES;
  98. Return 
  99. SCROL:
  100.   Inc OP : If OP>15 Then Add OP,-16 : Add OX,16 : If OX>319 Then Add OX,-320
  101.   Set Line $FFFF
  102.   X=335+OX+OP : Ink 3 : Draw X,0 To X,199
  103.   Y1=Peek(Start(9)+MX*2) : Y2=Peek(Start(9)+MX*2+1)
  104.   Ink 1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
  105.   Set Line Rnd($FFFF)
  106.   Ink 2,1 : Draw X,Y1 To X,0 : Draw X,Y2 To X,199
  107.   MY=(Y1+Y2)/2
  108.   Add MX,1,0 To 4999
  109.   Screen Offset 0,17+OX+OP,0
  110.   Screen Copy 0,X,0,X+1,200 To 0,X-320,0
  111. Return 
  112.   X=OX+OP+15 : Ink 0 : Draw X,0 To X,199
  113.   Ink 1 : Draw X,0 To X,Y1+Y1/2 : Draw X,Y2-(200-Y2)/2 To X,199
  114.   Ink 2 : Draw X,0 To X,Y1 : Draw X,Y2 To X,199
  115. Procedure MAKE
  116.   Erase 9 : Reserve As Data 9,10000
  117.   Y1=10 : Y2=189
  118.   For A=0 To 4999
  119.     Poke Start(9)+A*2,Y1
  120.     Poke Start(9)+A*2+1,Y2
  121.     UY1=Rnd(4)-2
  122.     UY2=Rnd(4)-2
  123.     If(Y2-UY2)-(Y1+UY1)<30 Then UY1=-2 : UY2=-2
  124.     Y1=Max(Min(Y1+UY1,180),10)
  125.     Y2=Max(Min(Y2-UY2,189),20)
  126.   Next 
  127. End Proc